package model;

import java.util.ArrayList;
import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;

/**
 * 
 * @author ARP
 *
 */
@NamedQuery(name = "Delbehandling.findPaaNavn", query = "SELECT d FROM Delbehandling d WHERE d.navn=:navn")
@Entity
public class Delbehandling {
    @SuppressWarnings("unused")
	@Id
    @GeneratedValue
    private int id;
    
    private String navn;
    
    private int minTid;
    private int idealTid;
    private int maxTid;
    
    @OneToMany(cascade= {CascadeType.PERSIST, CascadeType.REMOVE})
    private List<DelbehandlingPrioritet> delbehandlingPrioriteter = new ArrayList<DelbehandlingPrioritet>();
    
    
    public Delbehandling() {
        //Required by JPA
    }
    
    public Delbehandling(String navn, int minTid, int idealTid, int maxTid) {
        this.navn = navn;
        this.minTid = minTid;
        this.idealTid = idealTid;
        this.maxTid = maxTid;
    }
    
    
    public String getNavn() {
        return navn;
    }
    public void setNavn(String navn) {
        this.navn = navn;
    }
    public int getMinTid() {
        return minTid;
    }
    public void setMinTid(int minTid) {
        this.minTid = minTid;
    }
    public int getIdealTid() {
        return idealTid;
    }
    public void setIdealTid(int idealTid) {
        this.idealTid = idealTid;
    }
    public int getMaxTid() {
        return maxTid;
    }
    public void setMaxTid(int maxTid) {
        this.maxTid = maxTid;
    }
    
    public String toString() {
        return navn;
    }

    void addDelbehandlingPrioritetUD(DelbehandlingPrioritet delbehandlingPrioritet) {
        this.delbehandlingPrioriteter.add(delbehandlingPrioritet);
    }
    
    public void addDelbehandlingPrioritet(DelbehandlingPrioritet delbehandlingPrioritet) {
        delbehandlingPrioritet.setDelbehandlingUD(this);
        this.addDelbehandlingPrioritetUD(delbehandlingPrioritet);        
    }

    void removeDelbehandlingPrioritetUD(DelbehandlingPrioritet delbehandlingPrioritet) {
        this.delbehandlingPrioriteter.remove(delbehandlingPrioritet);
    }
    
    public void removeDelbehandlingPrioritet(DelbehandlingPrioritet delbehandlingPrioritet) {
        delbehandlingPrioritet.setDelbehandlingUD(null);
        this.removeDelbehandlingPrioritetUD(delbehandlingPrioritet);        
    }

    public boolean isTilfoejetEnBehandling() {
        return (delbehandlingPrioriteter.size() > 0);
    }
}
